# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# This config sets the following variables in your project::
#
#   ARROW_FULL_SO_VERSION - full shared library version of the found Arrow
#   ARROW_SO_VERSION - shared library version of the found Arrow
#   ARROW_VERSION - version of the found Arrow
#   ARROW_* - options used when the found Arrow is build such as ARROW_COMPUTE
#   Arrow_FOUND - true if Arrow found on the system
#
# This config sets the following targets in your project::
#
#   arrow_shared - for linked as shared library if shared library is built
#   arrow_static - for linked as static library if static library is built

@PACKAGE_INIT@

set(ARROW_VERSION "@ARROW_VERSION@")
set(ARROW_SO_VERSION "@ARROW_SO_VERSION@")
set(ARROW_FULL_SO_VERSION "@ARROW_FULL_SO_VERSION@")

set(ARROW_LIBRARY_PATH_SUFFIXES "@ARROW_LIBRARY_PATH_SUFFIXES@")
set(ARROW_INCLUDE_PATH_SUFFIXES "@ARROW_INCLUDE_PATH_SUFFIXES@")
set(ARROW_SYSTEM_DEPENDENCIES "@ARROW_SYSTEM_DEPENDENCIES@")
set(ARROW_BUNDLED_STATIC_LIBS "@ARROW_BUNDLED_STATIC_LIBS@")

include("${CMAKE_CURRENT_LIST_DIR}/ArrowOptions.cmake")

include(CMakeFindDependencyMacro)

# Load targets only once. If we load targets multiple times, CMake reports
# already existent target error.
if(NOT (TARGET arrow_shared OR TARGET arrow_static))
  include("${CMAKE_CURRENT_LIST_DIR}/ArrowTargets.cmake")

  if(TARGET arrow_static)
    set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
    set(THREADS_PREFER_PTHREAD_FLAG TRUE)
    find_dependency(Threads)

    if(DEFINED CMAKE_MODULE_PATH)
      set(_CMAKE_MODULE_PATH_OLD ${CMAKE_MODULE_PATH})
    endif()
    set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")

    foreach(_DEPENDENCY ${ARROW_SYSTEM_DEPENDENCIES})
      find_dependency(${_DEPENDENCY})
    endforeach()

    if(DEFINED _CMAKE_MODULE_PATH_OLD)
      set(CMAKE_MODULE_PATH ${_CMAKE_MODULE_PATH_OLD})
      unset(_CMAKE_MODULE_PATH_OLD)
    else()
      unset(CMAKE_MODULE_PATH)
    endif()

    get_property(arrow_static_loc TARGET arrow_static PROPERTY LOCATION)
    get_filename_component(arrow_lib_dir ${arrow_static_loc} DIRECTORY)

    if(ARROW_BUNDLED_STATIC_LIBS)
      add_library(arrow_bundled_dependencies STATIC IMPORTED)
      set_target_properties(
        arrow_bundled_dependencies
        PROPERTIES
          IMPORTED_LOCATION
          "${arrow_lib_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}arrow_bundled_dependencies${CMAKE_STATIC_LIBRARY_SUFFIX}"
        )

      get_property(arrow_static_interface_link_libraries
                  TARGET arrow_static
                  PROPERTY INTERFACE_LINK_LIBRARIES)
      set_target_properties(
        arrow_static PROPERTIES INTERFACE_LINK_LIBRARIES
        "${arrow_static_interface_link_libraries};arrow_bundled_dependencies")
    endif()
  endif()
endif()
